#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cmath>
using namespace std;
long long N, C;
long long arr[1010],sum_arr[1010];
long long ans;

void dfs(int i, long long sum)
{
	if (sum > C) return;
	if (sum_arr[i - 1] + sum <= C) {
		ans = max(ans, sum_arr[i - 1] + sum);
		return;
	}
	ans = max(ans, sum);
	for (int j = 1; j < i; j++) {
		dfs(j, sum + arr[j]);
	}
}

int main()
{
	cin >> N >> C;
	for (int i = 1; i <= N; ++i) {
		cin >> arr[i];
		sum_arr[i] = sum_arr[i - 1] + arr[i];
	}
	dfs(N + 1, 0);
	cout << ans << endl;
	return 0;
}


//#define _CRT_SECURE_NO_WARNINGS
//#include<iostream>
//#include<cmath>
//using namespace std;
//long long N, C;
//long long arr[1010];
//long long ans;
//
//void dfs(int i, long long sum)
//{
//	if (sum > C) return;
//	ans = max(ans, sum);
//	for (int j = i; j < N; j++) {
//		dfs(j, sum + arr[i]);
//	}
//}
//
//int main()
//{
//	cin >> N >> C;
//	for (int i = 0; i < N; ++i) 
//		cin >> arr[i];
//	for (int i = 0; i < N; i++) {
//		dfs(i + 1, arr[i]);
//	}
//	cout << ans << endl;
//	return 0;
//}

//#define _CRT_SECURE_NO_WARNINGS
//#include<iostream>
//#include<cmath>
//using namespace std;
//long long N, C;
//long long arr[1010];
//long long ans;
//
//void dfs(int i, long long sum)
//{
//	if (arr[i] + sum > C) {
//		ans = max(ans, sum);
//		return;
//	}
//	else {
//		sum += arr[i];
//		ans = max(ans, sum);
//		for (int j = i + 1; j < N; j++) {
//			dfs(j, sum);
//		}
//	}
//}
//
//int main()
//{
//	cin >> N >> C;
//	for (int i = 0; i < N; ++i)
//		cin >> arr[i];
//	dfs(0, 0);
//	cout << ans << endl;
//	return 0;
//}